package org.xx.armory.commons;

import java.io.IOException;
import java.io.OutputStream;

/**
 * 用于向输出流中写入内容的函数接口。
 *
 * @author Haart
 */
@FunctionalInterface
public interface StreamWriter {
    /**
     * 不写入任何内容的空函数。
     */
    StreamWriter EMPTY = (out) -> {
    };

    /**
     * 向指定的输出流中写入内容。
     *
     * @param out
     *         输出流。
     * @throws IOException
     *         如果写入内容时出现错误。
     * @throws IllegalArgumentException
     *         如果参数{@code out}是{@code null}。
     */
    void writeTo(
            OutputStream out
    )
            throws IOException;
}
